package main

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"os"
)

// 读取文件的方式有三种
// 1.os.Open(),Close(),os.read()
// 2.bufio.newReader,readSreing('\n')
// 3.ioutil.ReadFile()

// os读取文件
func readFilebyOs() {
	fileobj, err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("错误是%v", err)
		return
	}
	// 关闭文件
	defer fileobj.Close()
	for {
		var tmp [128]byte
		n, err := fileobj.Read(tmp[:])
		if err != nil {
			fmt.Println("读取出错")
			return
		}
		fmt.Printf("读取了%v\n", n)
		fmt.Println(string(tmp[:]))
		if n < 128 {
			return
		}
	}
}

// bufio读取文件
func readFileBufio() {
	fileobj, err := os.Open("./main.go")
	if err != nil {
		fmt.Printf("错误是%v", err)
		return
	}
	// 关闭文件
	defer fileobj.Close()
	// 创建一个读的对象
	reader := bufio.NewReader(fileobj)
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("读取出错")
			return
		}
		fmt.Print(line)
	}

}

// ioutil读取文件
func readFileIoutil() {
	ret, err := ioutil.ReadFile("./main.go")
	if err != nil {
		fmt.Printf("错误是%v", err)
		return
	}
	fmt.Println(string(ret))
}

func main() {
	// readFilebyOs()
	// readFileBufio()
	readFileIoutil()

}
